/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file    spi.c
  * @brief   This file provides code for the configuration
  *          of the SPI instances.
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2022 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "board.h"
#include "spi.h"

/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

SPI_HandleTypeDef hspi1;
static DMA_HandleTypeDef hdma_spi1_tx;

//static void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
//{

//  GPIO_InitTypeDef GPIO_InitStruct = {0};
//  if(spiHandle->Instance==SPI1)
//  {
//  /* USER CODE BEGIN SPI1_MspInit 0 */

//  /* USER CODE END SPI1_MspInit 0 */
//    /* SPI1 clock enable */
//    __HAL_RCC_SPI1_CLK_ENABLE();

//    __HAL_RCC_GPIOB_CLK_ENABLE();
//    /**SPI1 GPIO Configuration
//    PB3 (JTDO-TRACESWO)     ------> SPI1_SCK
//    PB5     ------> SPI1_MOSI
//    */
//    GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_5;
//    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
//    GPIO_InitStruct.Pull = GPIO_PULLDOWN;
//    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
//    GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
//    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

//    /* SPI1 DMA Init */
//    /* SPI1_TX Init */
//    hdma_spi1_tx.Instance = DMA1_Channel3;
//    hdma_spi1_tx.Init.Request = DMA_REQUEST_1;
//    hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
//    hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
//    hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE;
//    hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
//    hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
//    hdma_spi1_tx.Init.Mode = DMA_NORMAL;
//    hdma_spi1_tx.Init.Priority = DMA_PRIORITY_LOW;
//    if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK)
//    {
//      Error_Handler();
//    }

//    __HAL_LINKDMA(spiHandle,hdmatx,hdma_spi1_tx);

//    /* SPI1 interrupt Init */
//    HAL_NVIC_SetPriority(SPI1_IRQn, 0, 0);
//    HAL_NVIC_EnableIRQ(SPI1_IRQn);
//  /* USER CODE BEGIN SPI1_MspInit 1 */

//  /* USER CODE END SPI1_MspInit 1 */
//  }
//}

/* SPI1 init function */
void MX_SPI1_Init(void)
{

  /* USER CODE BEGIN SPI1_Init 0 */

  /* USER CODE END SPI1_Init 0 */

  /* USER CODE BEGIN SPI1_Init 1 */

  /* USER CODE END SPI1_Init 1 */
  hspi1.Instance = SPI1;
  hspi1.Init.Mode = SPI_MODE_MASTER;
  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
  hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
  hspi1.Init.NSS = SPI_NSS_SOFT;
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi1.Init.CRCPolynomial = 7;
  hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLE;
  if (HAL_SPI_Init(&hspi1) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
  /* USER CODE BEGIN SPI1_Init 2 */

  /* USER CODE END SPI1_Init 2 */

}
/* USER CODE BEGIN 1 */

/* USER CODE END 1 */
